package teste;

import static org.junit.Assert.assertEquals;

import java.util.Date;
import java.util.List;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import produto.Produto;
import produto.ProdutoRN;
import venda.Venda;
import venda.VendaRN;
import cliente.Cliente;
import cliente.ClienteRN;

public class VendaTest extends TestHeranca {

	Cliente c1;
	Cliente c2;
	Cliente c3;

	Produto p1;
	Produto p2;
	Produto p3;

	@Before
	public void setup() {

		c1 = new Cliente("Robson", "87333676471", "aaaa@aaa",
				"Rua Alternativa", new Date(), 5000.00);
		c2 = new Cliente("Telma", "56741987487", "tttt@tttt", "Kosmo",
				new Date(), 7000.00);
		c3 = new Cliente("Vitor", "54830652209", "vvvv@vvvv", "Aurora",
				new Date(), 1.00);

		ClienteRN cliente = new ClienteRN();

		cliente.salvar(c1);
		cliente.salvar(c2);
		cliente.salvar(c3);

		p1 = new Produto("lote", "Caderno", new Date(), 50, 7.0f);
		p2 = new Produto("lote2", "Regua", new Date(), 30, 2.5f);
		p3 = new Produto("fardo", "Papel", new Date(), 300, 1.5f);

		ProdutoRN produtoRN = new ProdutoRN();
		produtoRN.salvar(p1);
		produtoRN.salvar(p2);
		produtoRN.salvar(p3);

	}

	@After
	public void limpaBanco() {
		VendaRN vendaRN = new VendaRN();
		List<Venda> vendas = vendaRN.vendas();

		for (Venda venda : vendas) {
			vendaRN.excluir(venda);
		}

		ClienteRN clienteRN = new ClienteRN();
		List<Cliente> clientes = clienteRN.listar();

		for (Cliente cliente2 : clientes) {
			clienteRN.excluir(cliente2);
		}

		ProdutoRN produtoRN = new ProdutoRN();
		List<Produto> produtos = produtoRN.listar();
		for (Produto produto : produtos) {
			produtoRN.excluir(produto);
		}

	}

	@Test
	public void registraTest() {
		VendaRN vendaRN = new VendaRN();
		
		Venda venda = new Venda();
		venda.setCliente(c1);
		venda.setProduto(p1);
		venda.setDataVenda(new Date());
		vendaRN.registrarVenda(venda);
		
		Venda venda2 = new Venda();
		venda2.setCliente(c2);
		venda2.setProduto(p2);
		venda2.setDataVenda(new Date());
		vendaRN.registrarVenda(venda2);
		
		Venda venda3 = new Venda();
		venda3.setCliente(c3);
		venda3.setProduto(p3);
		venda3.setDataVenda(new Date());
		vendaRN.registrarVenda(venda3);

		List<Venda> vendas = vendaRN.vendas();

		assertEquals(3, vendas.size());

	}

}
